#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
打包脚本 - 用于将项目打包成单一可执行文件
"""

import os
import sys
import shutil
import platform
import subprocess

def main():
    """主打包函数"""
    print("开始打包PostgreSQL管理工具...")
    
    # 清理之前的构建文件
    if os.path.exists("dist"):
        print("清理旧的dist目录...")
        shutil.rmtree("dist")
    if os.path.exists("build"):
        print("清理旧的build目录...")
        shutil.rmtree("build")
        
    # 确定目标系统
    if len(sys.argv) > 1 and sys.argv[1] == "--target":
        if len(sys.argv) > 2:
            target_os = sys.argv[2].lower()
        else:
            print("错误: 未指定目标操作系统")
            return 1
    else:
        # 默认为当前操作系统
        target_os = platform.system().lower()
    
    print(f"目标操作系统: {target_os}")
    
    # 执行PyInstaller
    cmd = ["pyinstaller", "pgsql_manager.spec", "--clean"]
    
    try:
        subprocess.run(cmd, check=True)
        print("\n打包完成!")
        
        # 显示输出文件路径
        output_path = os.path.abspath(os.path.join("dist", "pgsql_manager"))
        if platform.system().lower() == "windows":
            output_path += ".exe"
        
        print(f"\n可执行文件位于: {output_path}")
        print(f"文件大小: {os.path.getsize(output_path) / (1024*1024):.2f} MB")
        
        # 复制到更容易访问的位置
        final_path = "pgsql_manager"
        if platform.system().lower() == "windows":
            final_path += ".exe"
            
        shutil.copy2(output_path, final_path)
        print(f"可执行文件已复制到当前目录: {os.path.abspath(final_path)}")
        
        return 0
    except subprocess.CalledProcessError as e:
        print(f"打包过程中出错: {e}")
        return 1

if __name__ == "__main__":
    sys.exit(main()) 